#include <iostream> //预处理器引入标准输入输出头文件
#define Pi 3.14159 // 定义宏

#ifdef Pi
#define  CIRCLE_AREA(radius) (Pi * (radius) * (radius)) // 定义宏函数
#endif

/**
 * @brief 自定义命名空间
 */
namespace MyNamespace
{
    int nVar{10};

    void display()
    {
        std::cout << "nVar:" << std::endl;
    }
}

namespace Outer
{
    namespace Inner
    {
        // 嵌套命名空间
    }

    namespace
    {
        // 匿名命名空间只能在此文件中使用
    }
}

namespace outter::inner
{
    // C++17 嵌套命名空间写法
}

/**
 * @brief main函数作为程序的入口函数，每个程序有且只能有一个main函数
 * @return 0代表程序正常结束、-1待变程序错误退出
 */
int main()
{
    std::cout << "Hello World" << std::endl; // 输出

    /* 写代码一定要规范有注释、命名准确、有空行*/
    std::string strVar{}; // 声明一个变量并初始化
    strVar = "Hello World"; // 赋值
    std::cout << strVar << std::endl; // 打印字符串

    std::cout << "Circle Square is "<< CIRCLE_AREA(5) << std::endl;

    {
        using MyNamespace::nVar; // using声明
        std::cout << nVar << std::endl;
        MyNamespace::display(); // :: 作用域解析运算符
        {
            using namespace MyNamespace; // 声明整个空间
            std::cout << nVar << std::endl;
            display();
        }
    }
    return 0;
}